package printfile

import (
	"fmt"
	"os"
)

// RedirectOutputToFile 将标准输出重定向到指定文件，并返回恢复功能
//func RedirectOutputToFile(filePath string) (func(), error) {
//	// 创建或打开文件用于输出，使用追加模式
//	file, err := os.OpenFile(filePath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666)
//	if err != nil {
//		return nil, fmt.Errorf("error opening file: %w", err)
//	}
//
//	// 保存原始的标准输出
//	oldStdout := os.Stdout
//	os.Stdout = file // 重定向到文件
//
//	// 返回一个恢复标准输出的函数
//	return func() {
//		os.Stdout = oldStdout // 恢复原始的标准输出
//		file.Close()          // 关闭文件
//	}, nil
//}

// RedirectOutputToFile 将标准输出重定向到指定文件，并返回恢复功能
func RedirectOutputToFile(filePath string) (func(), error) {
	// 创建或打开文件用于输出，使用写入模式并清空原有内容
	file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
	if err != nil {
		return nil, fmt.Errorf("error opening file: %w", err)
	}

	// 保存原始的标准输出
	oldStdout := os.Stdout
	os.Stdout = file // 重定向到文件

	// 返回一个恢复标准输出的函数
	return func() {
		os.Stdout = oldStdout // 恢复原始的标准输出
		file.Close()          // 关闭文件
	}, nil
}

// printToFile 将内容打印到文件
func printToFile(msg string) {
	fmt.Println(msg) // 这里的内容会被写入到文件
}
